{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "36bb63fe",
   "metadata": {},
   "source": [
    "# 项目5. 寿命拟合\n",
    "\n",
    "- 姓名：马梓荃\n",
    "- 学号：20201060339\n",
    "- 邮箱：979324173@qq.com"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0361d66f",
   "metadata": {},
   "source": [
    "<a href=\"https://sm.ms/image/2xtO5MEgUG4e6LX\" target=\"_blank\"><img src=\"https://s2.loli.net/2022/05/27/2xtO5MEgUG4e6LX.jpg\" ></a>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8c50e544",
   "metadata": {},
   "source": [
    "## 项目介绍\n",
    "\n",
    "我们的世界多姿多彩，变化万千。但如果你仔细观察，能够发现更为有趣的现象。\n",
    "\n",
    "本项目聚焦光电过程。光电过程是一个光子-电子和电子-光子转化的过程，稍瞬即逝。好在科学家和工程师们开发了先进的技术，可以利用超快探测器或者相机捕获这些过程。\n",
    "\n",
    "- 现假设有一个发光染料，其由两种发光物质组成，比例分别为A和B。\n",
    "\n",
    "- 这两种发光物质分别具有不同的激子寿命（即电子从高能级跃迁到低能级的平均所用的时间）\n",
    "\n",
    "- 每一种发光物质如果单独被一个超短的激光激发，该物质的发光强度随时间的变化过程可以表示为：\n",
    "\n",
    "$$I(t)=I(0)e^{-\\frac{t}{\\tau}}$$\n",
    "\n",
    "- 当上述染料被激发时，其内的两种发光物质同时被激发，且初始发光强度与物质的比例成正比，因此，总的强度可以表示为：\n",
    "\n",
    "$$I(t)=Ae^{-\\frac{t}{\\tau_1}} + Be^{-\\frac{t}{\\tau_2}}$$\n",
    "\n",
    "- 该发光过程我们用一个超快探测器进行探测，测得的电信号（如光电流）与光信号成正比，因此该光电流的变化过程也符合上面的公式。\n",
    "\n",
    "- 假设实验记录了时间在$0-1\\mu s$内的光电流值，采样间隔为2ns。\n",
    "\n",
    "\n",
    "## 项目目的\n",
    "本项目需要结合我们学习过的非线性最小二乘法拟合得到未知参数：$A, B, \\tau_1, \\tau_2$。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0cab052a",
   "metadata": {},
   "source": [
    "## 高斯-牛顿法介绍\n",
    "假设实验测得一组数据：\n",
    "$(x_1, y_1), (x_2, y_2),... ...,(x_n, y_n)$\n",
    "\n",
    "我们期望用某一个函数去拟合这些数据，得到最小二乘下的最优近似。\n",
    "\n",
    "假设该函数包含m个待拟合参数：$c_1, c_2, ... ..., c_m$。该函数可以表示为：\n",
    "\n",
    "$y = f(x, c_1, c_2, ... ..., c_m)$\n",
    "\n",
    "则在每一个已知数据点下，对于给定的某一组$c_1, c_2, ... ..., c_m$可以求得对应的误差值：\n",
    "\n",
    "$$\n",
    "E_1(c_1, c_2, ... ..., c_m) = f(x_1, c_1, c_2, ... ..., c_m) - y_1 \\\\\n",
    "E_2(c_1, c_2, ... ..., c_m) = f(x_2, c_1, c_2, ... ..., c_m) - y_2 \\\\\n",
    "E_3(c_1, c_2, ... ..., c_m) = f(x_3, c_1, c_2, ... ..., c_m) - y_3 \\\\\n",
    "... ... \\\\\n",
    "E_n(c_1, c_2, ... ..., c_m) = f(x_n, c_1, c_2, ... ..., c_m) - y_1 \\\\\n",
    "$$\n",
    "\n",
    "高斯-牛顿迭代法的公式如下：\n",
    "\n",
    "$$\n",
    "<c_1, c_2, ... ..., c_m>_{i+1} = <c_1, c_2, ... ..., c_m>_{i} - \n",
    "\\frac{{DF(<c_1, c_2, ... ..., c_m>_{i})}^TF(<c_1, c_2, ... ..., c_m>_{i})}{{DF(<c_1, c_2, ... ..., c_m>_{i})}^T{DF(<c_1, c_2, ... ..., c_m>_{i})}}\n",
    "$$\n",
    "\n",
    "其中：\n",
    "\n",
    "$$\n",
    "F(c_1, c_2, ... ..., c_m) =\n",
    "\\left[\n",
    "\\begin{matrix}\n",
    "E_1(c_1, c_2, ... ..., c_m) \\\\\n",
    "E_2(c_1, c_2, ... ..., c_m) \\\\\n",
    "E_3(c_1, c_2, ... ..., c_m) \\\\\n",
    "... ... \\\\\n",
    "E_n(c_1, c_2, ... ..., c_m)\n",
    "\\end{matrix}\n",
    "\\right]\n",
    "$$\n",
    "\n",
    "\n",
    "$$\n",
    "DF(c_1, c_2, ... ..., c_m) =\n",
    "\\left[\n",
    "\\begin{matrix}\n",
    "\\frac{\\partial{E_1}}{\\partial{c_1}} & \\frac{\\partial{E_1}}{\\partial{c_2}} & ... & \\frac{\\partial{E_1}}{\\partial{c_m}}\\\\\n",
    "\\frac{\\partial{E_2}}{\\partial{c_1}} & \\frac{\\partial{E_2}}{\\partial{c_2}} & ... & \\frac{\\partial{E_2}}{\\partial{c_m}}\\\\\n",
    "\\frac{\\partial{E_3}}{\\partial{c_1}} & \\frac{\\partial{E_3}}{\\partial{c_2}} & ... & \\frac{\\partial{E_3}}{\\partial{c_m}}\\\\\n",
    "... & ... & ... & ... \\\\\n",
    "\\frac{\\partial{E_n}}{\\partial{c_1}} & \\frac{\\partial{E_1}}{\\partial{c_2}} & ... & \\frac{\\partial{E_1}}{\\partial{c_m}}\\\\\n",
    "\\end{matrix}\n",
    "\\right]\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "221f3bfb",
   "metadata": {},
   "source": [
    "## 1. 模拟实验过程"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "af477f12",
   "metadata": {},
   "source": [
    "### 1.1 定义光电流的时间依赖函数f"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "f2cfd109",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 补全以下代码，使函数f计算得到某一个时刻t的光电流值\n",
    "# 假设采用的参数分别为A，B，t1，t2\n",
    "# 其中A，B，t1，t2由一个numpy向量C来表示\n",
    "# 即C=[A，B，t1，t2]\n",
    "\n",
    "def f(t, C):\n",
    "    # 补全下面的return命令\n",
    "    return  C[0] * np.exp(- t / C[2]) + C[1] * np.exp(- t / C[3])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d4457214",
   "metadata": {},
   "source": [
    "### 1.2 测试f函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "7cd53f11",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "ca900df0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5.999400029999\n"
     ]
    }
   ],
   "source": [
    "# 随便定义一个C\n",
    "# 在下面[]内填入[A，B，t1，t2]\n",
    "C = [1,5,10000,10000]\n",
    "C = np.array(C)\n",
    "print(f(1, C))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3623e05c",
   "metadata": {},
   "source": [
    "### 1.3 准备实验数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "cfed0352",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 自己设定一个A，B，t1，t2来初始化下面的C\n",
    "\n",
    "# 设置A，范围最好在1-10\n",
    "A = 3\n",
    "\n",
    "# 设置A，范围最好在1-10\n",
    "B = 7\n",
    "\n",
    "# 设置t1，范围最好在10-500纳秒\n",
    "t1 = 233\n",
    "\n",
    "# 设置t2，范围最好在10-500纳秒\n",
    "t2 = 487\n",
    "\n",
    "# 将上面数据组合成一个向量C\n",
    "C = np.array([A, B, t1, t2])\n",
    "\n",
    "# 设置一个噪声强度，范围在0.01 - 0.5之间\n",
    "noiseLevel = 0.01\n",
    "\n",
    "# 定义实验的时间\n",
    "timeStart = 0             # 纳秒\n",
    "timeStop = 1000           # 纳秒\n",
    "timeStep = 1              # 纳秒\n",
    "\n",
    "# 计算t向量\n",
    "t = np.arange(timeStart, timeStop, timeStep)\n",
    "\n",
    "# 调用f函数，并加上一定的噪声，从而模拟测得的光电流向量\n",
    "I = f(t, C) + (np.random.rand(t.size)  - 0.5) * noiseLevel"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ad83ae70",
   "metadata": {},
   "source": [
    "### 1.4 做图展示该实验数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "1bdd5250",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.4682148378080064, 11.999223222862192)"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize = (12, 8))\n",
    "plt.scatter(t, I, c = 'm')\n",
    "plt.xlabel(\"time (ns)\", fontsize = 20)\n",
    "plt.ylabel(\"Light intensity\", fontsize = 20)\n",
    "plt.yscale(\"log\")\n",
    "plt.xlim(- timeStop * 0.02, timeStop * 1.02)\n",
    "plt.ylim(np.abs(np.min(I)) * 0.5, np.max(I) * 1.2)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e75a6f20",
   "metadata": {},
   "source": [
    "## 2. 高斯-牛顿法最小二乘拟合"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f31fd5f0",
   "metadata": {},
   "source": [
    "### 2.1 定义F(X)函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "a259bf24",
   "metadata": {},
   "outputs": [],
   "source": [
    "def F(X):\n",
    "    return f(t, X) - I"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "00bff305",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 0.00064731  0.00106777 -0.00070804  0.00196457 -0.00434654  0.00225032\n",
      "  0.00343878 -0.0010468  -0.00259209  0.00457212 -0.00359648 -0.00362176\n",
      " -0.00209136 -0.0038748   0.00251424  0.00161278 -0.00104899 -0.0012851\n",
      " -0.00323695  0.0023322 ]\n"
     ]
    }
   ],
   "source": [
    "# 测试F(X)\n",
    "# 打印F(X)的前二十行\n",
    "print(F(C)[:20])\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5a34b324",
   "metadata": {},
   "source": [
    "### 2.2 定义DF(X)函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "1fb3d0e4",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 此处采用一阶差分近似导数\n",
    "def DF(X):\n",
    "    dx = 0.001\n",
    "    dX = np.array([dx, dx, dx, dx])\n",
    "    # 初始化一个DF矩阵，具有t维度的行数和C维度的列数\n",
    "    result = np.zeros((t.size,X.size))\n",
    "    \n",
    "    # 进行循环计算\n",
    "    # 补全下面的DF(X)计算过程\n",
    "    # 建议采用差分代替导数\n",
    "    # python自带的库中有exp函数\n",
    "    for i in range(t.size):\n",
    "        result[i,0] = np.exp(- t[i] / X[2])\n",
    "        result[i,1] = np.exp(- t[i] / X[3])\n",
    "        result[i,2] = X[0] * t[i] * np.exp(- t[i] / X[2]) / X[2] ** 2\n",
    "        result[i,3] = X[1] * t[i] * np.exp(- t[i] / X[3]) / X[3] ** 2\n",
    "    return result"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "cf383ed9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n",
       "       [9.95717351e-01, 9.97948719e-01, 5.50231549e-05, 2.94542754e-05],\n",
       "       [9.91453044e-01, 9.95901645e-01, 1.09575020e-04, 5.87877127e-05],\n",
       "       [9.87206999e-01, 9.93858771e-01, 1.63658623e-04, 8.80006838e-05],\n",
       "       [9.82979138e-01, 9.91820087e-01, 2.17276974e-04, 1.17093560e-04],\n",
       "       [9.78769384e-01, 9.89785585e-01, 2.70433067e-04, 1.46066710e-04],\n",
       "       [9.74577658e-01, 9.87755256e-01, 3.23129876e-04, 1.74920503e-04],\n",
       "       [9.70403884e-01, 9.85729092e-01, 3.75370362e-04, 2.03655307e-04],\n",
       "       [9.66247985e-01, 9.83707084e-01, 4.27157466e-04, 2.32271489e-04],\n",
       "       [9.62109885e-01, 9.81689224e-01, 4.78494113e-04, 2.60769414e-04],\n",
       "       [9.57989506e-01, 9.79675504e-01, 5.29383212e-04, 2.89149447e-04],\n",
       "       [9.53886774e-01, 9.77665914e-01, 5.79827654e-04, 3.17411952e-04],\n",
       "       [9.49801612e-01, 9.75660446e-01, 6.29830316e-04, 3.45557292e-04],\n",
       "       [9.45733945e-01, 9.73659092e-01, 6.79394055e-04, 3.73585828e-04],\n",
       "       [9.41683699e-01, 9.71661843e-01, 7.28521714e-04, 4.01497922e-04],\n",
       "       [9.37650798e-01, 9.69668691e-01, 7.77216120e-04, 4.29293932e-04],\n",
       "       [9.33635169e-01, 9.67679628e-01, 8.25480081e-04, 4.56974218e-04],\n",
       "       [9.29636738e-01, 9.65694645e-01, 8.73316393e-04, 4.84539138e-04],\n",
       "       [9.25655430e-01, 9.63713733e-01, 9.20727832e-04, 5.11989047e-04],\n",
       "       [9.21691173e-01, 9.61736885e-01, 9.67717160e-04, 5.39324304e-04]])"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 测试DF(X)\n",
    "# 打印DF(X)的前二十行\n",
    "DF(C)[:20]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "338d3bd0",
   "metadata": {},
   "source": [
    "### 2.3 迭代求解"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "78ec4f16",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "第 1 次迭代：  [  1.36778092   8.60214968 100.71683116 499.55551056]\n",
      "第 2 次迭代：  [  1.37580701   8.5947396  153.26852008 448.09402948]\n",
      "第 3 次迭代：  [  2.06782756   7.92652936 212.71247991 464.69379802]\n",
      "第 4 次迭代：  [  2.92824675   7.07152455 235.77848089 483.53358396]\n",
      "第 5 次迭代：  [  2.97808137   7.021982   232.3110569  486.38370446]\n",
      "第 6 次迭代：  [  2.98064259   7.01942584 232.50652896 486.44319678]\n",
      "第 7 次迭代：  [  2.98064934   7.01941917 232.50671627 486.44330491]\n",
      "\n",
      "经过 6 次迭代，拟合成功!\n",
      "\n",
      "结果是:\t\t [  2.98064934   7.01941917 232.50671627 486.44330491]\n",
      "\n",
      "理论值是：\t [  3   7 233 487]\n"
     ]
    }
   ],
   "source": [
    "# 给出C的初始猜测，按照[A, B, t1, t2]格式\n",
    "C_guess = [100,1010,100,500]  ## 给出初始值\n",
    "\n",
    "C_fitting = [C_guess]\n",
    "\n",
    "# 给出计算终止条件\n",
    "error = 1e-3\n",
    "\n",
    "# 给出最大迭代次数\n",
    "maxIter = 100\n",
    "\n",
    "for i in range(maxIter):\n",
    "    # 获取当前的C，即Xold\n",
    "    Ci = np.array(C_fitting[i])\n",
    "    DFi = DF(Ci)\n",
    "    Fi = F(Ci)\n",
    "    \n",
    "    # 这里展示利用python里面的try... except...语句进行异常处理\n",
    "    try:\n",
    "        Cnext = Ci - np.linalg.inv(DFi.T @ DFi) @ (DFi.T @ Fi)\n",
    "    except:\n",
    "        print(\"\\n计算不收敛，重新给出一个初始猜测\")\n",
    "        break\n",
    "        \n",
    "    C_fitting.append(list(Cnext))\n",
    "    print('第', i+1, '次迭代： ',Cnext)\n",
    "    \n",
    "    # 判断是否达到误差要求\n",
    "    # 这里利用内积法计算误差\n",
    "    currentError = (Cnext - Ci).T @ (Cnext - Ci)\n",
    "    if currentError < error:\n",
    "        print(\"\\n经过\", i, \"次迭代，拟合成功!\")\n",
    "        print(\"\\n结果是:\\t\\t\", Cnext)\n",
    "        print(\"\\n理论值是：\\t\", C)\n",
    "        break   "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "21367d19",
   "metadata": {},
   "source": [
    "## 3. 做图展示拟合过程"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "4cc8419a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize = (12, 8))\n",
    "plt.xlabel(\"time (ns)\", fontsize = 20)\n",
    "plt.ylabel(\"Light intensity\", fontsize = 20)\n",
    "\n",
    "plt.xlim(- timeStop * 0.02, timeStop * 1.02)\n",
    "plt.ylim(np.abs(np.min(I)), np.max(I) * 1.2)\n",
    "\n",
    "plt.scatter(t, I, c = 'k')\n",
    "\n",
    "legend = []\n",
    "for i in range(len(C_fitting)):\n",
    "    I_fitting = f(t, C_fitting[i])\n",
    "    plt.plot(t, I_fitting)\n",
    "    legend.append(i)\n",
    "\n",
    "legend.append(\"raw data\")\n",
    "plt.legend(legend)\n",
    "plt.yscale('log')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b7543bbc",
   "metadata": {},
   "source": [
    "## 4. 分享经验"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "00bff9d8",
   "metadata": {},
   "source": [
    "主要的部分就是按照我取的不规则C，在后半部分给定初值时不要给的太大，不然会报错，在几十次拟合后拟合失败"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4b683cc4",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
